(deftemplate animal
    (slot nume)   ; numele animalului in cadrul gradinii zoologice
    (slot sex)   ; sexul animaluli
    (slot specie)    ; specia din care face parte
    (slot regimalimentar)   ; daca este vegetarian, carnivor sau omnivor
    (slot zonaviata)   ;zona in care traieste animalul in libertate
    (slot mediuviata)   ; mediul in care traieste animalul in libertate
    (slot cc)  ; daca este consumat sau consumator
    )

(assert(animal(nume Oli)(sex M)(specie papagal)(regimalimentar vegetarian)(zonaviata mediteraniana)(mediuviata aerian)(cc consumat)))
(assert(animal(nume Jamal)(sex M)(specie ornitorinc)(regimalimentar vegetarian)(zonaviata mediteraniana)(mediuviata semiacvatic)(cc consumat)))
(assert(animal(nume Aliza)(sex F)(specie ren)(regimalimentar vegetarian)(zonaviata subpolara)(mediuviata terestru)(cc consumat)))
(assert(animal(nume Lexi)(sex F)(specie lup)(regimalimentar carnivor)(zonaviata temperata)(mediuviata terestru)(cc consumator)))
(assert(animal(nume Piggi)(sex M)(specie porc)(regimalimentar omnivor)(zonaviata temperata)(mediuviata terestru)(cc consumat)))
(assert(animal(nume Flipper)(sex M)(specie delfin)(regimalimentar carnivor)(zonaviata mediteraniana)(mediuviata acvatic)(cc consumat)))
(assert(animal(nume Bela)(sex F)(specie oaie)(regimalimentar vegetarian)(zonaviata temperata)(mediuviata terestru)(cc consumat)))
(assert(animal(nume Jolie)(sex F)(specie testoasa)(regimalimentar vegetarian)(zonaviata mediteraniana)(mediuviata semiacvatic)(cc consumat)))
(assert(animal(nume Monica)(sex F)(specie foca)(regimalimentar carnivor)(zonaviata polara)(mediuviata semiacvatic)(cc consumat)))
(assert(animal(nume Fram)(sex M)(specie urs)(regimalimentar carnivor)(zonaviata polara)(mediuviata terestru)(cc consumator)))


(defrule q1
    (animal(nume ?n)(mediuviata ?mv &semiacvatic))
    =>
    (printout t " Animalul cu numele: "?n , " traieste in mediul "?mv crlf)
    )

(defrule q2
    (animal(nume ?n)(zonaviata ?zv &mediteraniana)(regimalimentar ?ra &vegetarian))
    =>
    (printout t " Animalul cu numele: "?n , " traieste in zona "?zv" si este un animal "?ra crlf)
    )

(defrule q3
    (animal(nume ?n)(zonaviata ?zv &polara))
    =>
    (printout t " Animalul cu numele: "?n , " traieste in zona "?zv crlf)
    )

(run)
